Skip to content

Fix CI Figshare flakiness with retry logic and data caching#56

Merged
iahncajigas merged 1 commit intomainfrom
fix/ci-figshare-resilience
Mar 11, 2026
Merged

Fix CI Figshare flakiness with retry logic and data caching#56
iahncajigas merged 1 commit intomainfrom
fix/ci-figshare-resilience

Conversation

@iahncajigas
Copy link
Copy Markdown
Contributor

Summary

  • Add exponential-backoff retry (4 attempts, 2ˢ/4ˢ/8ˢ delays) to _http_get() for 403/429/5xx errors
  • Cache the ~50 MB Figshare example-data archive across CI runs using actions/cache in all 4 notebook jobs
  • Uses NSTAT_DATA_DIR env var to direct data to a cacheable path

This eliminates the transient notebook-changed-pr failures caused by Figshare returning HTTP 403 to GitHub Actions IPs.

Test plan

  • test_datasets.py passes locally
  • _http_get() works correctly for normal Figshare API requests
  • Cache key nstat-example-data-v1 can be bumped if the dataset changes

🤖 Generated with Claude Code

Two complementary fixes for transient HTTP 403 errors from Figshare
that were causing notebook-changed-pr CI failures:

1. Add exponential-backoff retry (4 attempts) to _http_get() in
   data_manager.py for 403/429/5xx errors and network failures.

2. Cache the example data directory across CI runs using actions/cache
   in all notebook jobs (smoke, parity-core, changed-pr, helpfile-full).
   Uses NSTAT_DATA_DIR env var so the data persists between runs and
   Figshare is only contacted when the cache is cold.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@iahncajigas iahncajigas merged commit d7e67f0 into main Mar 11, 2026
13 checks passed
@iahncajigas iahncajigas deleted the fix/ci-figshare-resilience branch March 11, 2026 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant